perm filename BDOUT[3,ALS] blob sn#499129 filedate 1980-04-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BDOUT AGAIN AGAIN1 BDOUT1 BDOUT2 CRLFCK PPLUS BORDER PSTAR PHYFEN PBM PBK PWM PWK
C00010 ENDMK
C⊗;
;BDOUT AGAIN AGAIN1 BDOUT1 BDOUT2 CRLFCK PPLUS BORDER PSTAR PHYFEN PBM PBK PWM PWK

;************************************************************
;BDOUT WILL PRINT OUT THE CURRENT BOARD IN PICTURE FORMAT.  *
;BDOUT USES REGISTERS A, P, K, U1, U2, U4, U5, X3, AND X4.  *
;REGISTERS A, P, AND K ARE NOT DESTROYED BY BDOUT           *
;************************************************************

BDOUT:;	MOVE	A,OA
;	MOVE	P,OP
;	MOVE	K,OK
	PUSHJ	PDP,TERPRI
	SETZB	X4,U2
	SETZM	X3

	MOVE	U4,A
	MOVE	U5,P
	AND	U4,K		;ACTIVE KINGS
	AND	U5,K		;PASSIVE KINGS
;	\|\\M1SAIL23;M2CHK.FNT[3,ALS];\F1
	MOVEI	U1,"\"			;CALL CHK FONT
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"F"
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"2"
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"H"		;UPPER LEFT CORNER
	PUSHJ	PDP,MAGOUT
	PUSHJ	PDP,TBORDE
	MOVEI	U1,"W"		;UPPER RIGHT CORNER
	PUSHJ	PDP,MAGOUT
	PUSHJ	PDP,TERPRI
	MOVEI	U1,15
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,12
	PUSHJ	PDP,MAGOUT
	PUSHJ	PDP,PSTAR
AGAIN:	PUSHJ	PDP,PPLUS	;PRINT + SIGN
	TRNN	U2,7
	JRST	CRLFCK
AGAIN1:	ROT	A,1
	ROT	U4,1
	ROT	P,1
	ROT	U5,1
	TLNN	U4,400000	;BK?
	JRST	.+6
	SKIPE	COLOR
	PUSHJ	PDP,PWK
	SKIPN	COLOR
	PUSHJ	PDP,PBK
	JRST	BDOUT1
	TLNN	A,400000	;BM?
	JRST	.+6		;NO
	SKIPE	COLOR
	PUSHJ	PDP,PWM
	SKIPN	COLOR
	PUSHJ	PDP,PBM
	JRST	BDOUT1
	TLNN	U5,400000	;WK?
	JRST	.+6		;NO
	SKIPE	COLOR
	PUSHJ	PDP,PBK
	SKIPN	COLOR
	PUSHJ	PDP,PWK
	JRST	BDOUT1
	TLNN	P,400000	;WM?
	JRST	.+6		;NO
	SKIPE	COLOR
	PUSHJ	PDP,PBM
	SKIPN	COLOR
	PUSHJ	PDP,PWM
	JRST	BDOUT1
	PUSHJ	PDP,PHYFEN	;EMPTY SQUARE
BDOUT1:	AOS	X4
	CAIN	X4,↑D8		;SHIFT OVER BITS 9, 18, 27
	JRST	BDOUT2
	CAIN	X4,↑D17
	JRST	BDOUT2
	CAIE	X4,↑D26
	JRST	CRLFCK
BDOUT2:	ROT	A,1
	ROT	U4,1
	ROT	P,1
	ROT	U5,1
	AOS	X4
CRLFCK:	TRNE	U2,7		;DO WE WANT A CR-LF?
	JRST	AGAIN		;NO
	PUSHJ	PDP,PSTAR
	PUSHJ	PDP,TERPRI
	MOVEI	U1,15
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,12
	PUSHJ	PDP,MAGOUT
	SETCMM	X3
	JUMPGE	X3,.+3
	PUSHJ	PDP,PSTAR
	JRST	AGAIN1
	CAIE	U2,↑D64
	JRST	AGAIN-1
	MOVEI	U1,"G"		;BOTTOM LEFT CORNER
	PUSHJ	PDP,MAGOUT
	PUSHJ	PDP,BBORDE	;BOTTOM BORDER
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"W"		;BOTTOM RIGHT CORNER
	PUSHJ	PDP,MAGOUT
	PUSHJ	PDP,TERPRI
	PUSHJ	PDP,TERPRI
	MOVEI	U1,15
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,12
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,15
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,12
	PUSHJ	PDP,MAGOUT
	ROT	A,1
	ROT	P,1
	MOVEI	U1,"\"			;RESTORE TEXT FONT
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"F"
	PUSHJ	PDP,MAGOUT
	MOVEI	U1,"1"
	PUSHJ	PDP,MAGOUT
	POPJ	PDP,

PPLUS:	MOVEI	U1,[ASCIZ /+ /]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"+"
	PUSHJ	PDP,MAGOUT
	MOVEI	U1," "			;NON-PLAYING SQUARE
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

BORDER: ;MOVEI	U1,[ASCIZ /* * * * * * * * * */]
;	PUSHJ	PDP,PRINT	
TBORDE:	MOVEI	U1,"T"		;TOP LINE
	SKIPA
BBORDE:	MOVEI	U1,"U"		;BOTTOM LINE
	MOVEI	X2,10
	PUSHJ	PDP,MAGOUT
	SOJG	X2,.-1
	POPJ	PDP,

PSTAR:	MOVEI	U1,[ASCIZ /* /]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"*"
	PUSHJ	PDP,MAGOUT
	MOVEI	U1," "
	PUSHJ	PDP,MAGOUT
	POPJ	PDP,

PHYFEN:	MOVEI	U1,[ASCIZ /  /]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"Z"		;EMPTY PLAYING SQUARE
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

PBM:	MOVEI	U1,[ASCIZ /B /]
	SKIPN	SIDE
	MOVEI	U1,[ASCIZ /W /]		
	PUSHJ	PDP,PRINT
	MOVEI	U1,"d"		;black man
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

PBK:	MOVEI	U1,[ASCIZ /BK/]
	SKIPN	SIDE
	MOVEI	U1,[ASCIZ /WK/]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"c"		;black king
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

PWM:	MOVEI	U1,[ASCIZ /W /]
	SKIPN	SIDE
	MOVEI	U1,[ASCIZ /B /]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"D"		;WHITE MAN
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

PWK:	MOVEI	U1,[ASCIZ /WK/]
	SKIPN	SIDE
	MOVEI	U1,[ASCIZ /BK/]
	PUSHJ	PDP,PRINT
	MOVEI	U1,"C"		;WHITE KING
	PUSHJ	PDP,MAGOUT
	AOS	U2
	POPJ	PDP,

LEGALY:	;SETZM	MJW(X3)		;MUST ZERO SINCE BITS MAY BE LEFT FROM BACK UP
	AOS	(PDP)
	SETOM	OJ
	SETZB	U3,U4
	SETZB	U5,Q
	MOVE	U1,A
	MOVE	U2,K
	AND	U2,U1		;ACTIVE KINGS
	MOVE	Z,U1
	IOR	Z,P
	XOR	Z,GUARD		;EMPTY SQUARES
	MOVE	X5,COLOR
	XOR	X5,X3
	ANDI	X5,1		;NEEDED LATER
	TRNE	X5,1
	EXCH	U1,U2
	JUMPE	U1,LEG1
	MOVE	U3,Z
	LSH	U3,4
	AND	U3,P
	LSH	U3,4
	AND	U3,U1
LEG1:	MOVEM	U3,PLRF(X3)
	JUMPE	U1,LEG2
	MOVE	U4,Z
	LSH	U4,5
	AND	U4,P
	LSH	U4,5
	AND	U4,U1
LEG2:	MOVEM	U4,PLLF(X3)
	JUMPE	U2,LEG3
	MOVE	U5,Z
	LSH	U5,-4
	AND	U5,P
	LSH	U5,-4
	AND	U5,U2
LEG3:	MOVEM	U5,PLLB(X3)
	JUMPE	U2,LEG4
	MOVE	Q,Z
	LSH	Q,-5
	AND	Q,P
	LSH	Q,-5
	AND	Q,U2
LEG4:	MOVEM	Q,PLRB(X3)
	SKIPE	Q		;ARE THERE ANY JUMPS
	POPJ	PDP,		;JUMP RETURN
	SKIPE	U5
	POPJ	PDP,
	SKIPE	U4
	POPJ	PDP,
	SKIPE	U3
	POPJ	PDP,
	AOS	(PDP)
	SETZM	OJ
	JUMPE	U1,LEG5
	MOVE	U3,Z
	LSH	U3,4
	AND	U3,U1
	MOVEM	U3,PLRF(X3)
	MOVE	U4,Z
	LSH	U4,5
	AND	U4,U1
	MOVEM	U4,PLLF(X3)
LEG5:	JUMPE	U2,LEG6
	MOVE	U5,Z
	LSH	U5,-4
	AND	U5,U2
	MOVEM	U5,PLLB(X3)
	MOVE	Q,Z
	LSH	Q,-5
	AND	Q,U2
	MOVEM	Q,PLRB(X3)
LEG6:	SKIPE	Q
	POPJ	PDP,
	SKIPE	U5
	POPJ	PDP,
	SKIPE	U4
	POPJ	PDP,
	SKIPE	U3
	POPJ	PDP,
	SOS	(PDP)
	SOS	(PDP)
	POPJ	PDP,		;NO MOVE RETURN
GUARD:	377377377377
	END